#ifndef _CRECURSOS_H
#define _CRECURSOS_H

#include "md2.h"
#include "textura.h"

#define MAX_TEXTURAS_ESC 	25
#define MAX_TIPOS_ENEM 		15
#define MAX_TIPOS_DISPAROS 	5
#define MAX_TIPOS_PARTICULAS 5
#define MAX_SCROLLS 5
#define NUM_TEXTURAS_EDITOR 	10

#define MAX_TEXTURAS_ESC 	25
#define MAX_ALTURA_BLOQUES 	20
#define MAX_LARGO_BLOQUES 	500

#define TEXTURA_PLAT_INICIO 15
#define TEXTURA_PLAT_CENTRO 16
#define TEXTURA_PLAT_FIN 	17
#define TEXTURA_PLAT_SOLA 	18

#define TEXTURA_SUELO_INICIO 0
#define TEXTURA_SUELO_CENTRO 1
#define TEXTURA_SUELO_FIN 	2


/*---------------------------------
	 Level data struct
---------------------------------*/
typedef struct 
{
	char m_sNombre[255];
	char m_sDirBase[255];
	char m_sDirFase[255];
	int m_uiLargo;
	int m_uiAlto;
	int m_aBloques[MAX_ALTURA_BLOQUES][MAX_LARGO_BLOQUES];	
	
}TEscenario;


/*------------------------------------------------------------------------------
	Implements a resources manager.
	Allow to us load resources and share them with other objects.
------------------------------------------------------------------------------*/
class CRecursos
{
	// Modelos MD2	
	CMd2	m_PJ;
	CMd2	m_Disparos[MAX_TIPOS_DISPAROS];
	CMd2	m_Enemigos[MAX_TIPOS_ENEM];
	
	// Texturas
	CTextura m_TexturasParticulas[MAX_TIPOS_PARTICULAS];
	CTextura m_TexturasScrolls[MAX_SCROLLS];
	CTextura m_TexturasEscenario[MAX_TEXTURAS_ESC];
	
	CTextura m_TexturasEditor[NUM_TEXTURAS_EDITOR];
	
	// Contadores de recursos
	TEscenario m_tEscenario;
		
	// Contadores de recursos
	int		m_iNumTiposEnem;
	int		m_iNumTexturasEscCargadas;
		
public:

	CRecursos();
	~CRecursos();
	Bool Cargar();
	void Liberar();	
	Bool CargarTexturasScrolls(int Fase);
	Bool CargarTexturasEscenario(char szPath[255]=PATH_BAMBOO);
	Bool CargarTexturasEditor();
	Bool CargarEscenario(const char *szNombreArchivo);
	Bool CargarEnemigos();
	
	/*---------------------------------
	 get Functions
	---------------------------------*/
	CMd2 *getMd2Disparo(int e)			{return (&m_Disparos[e]);}
	CMd2 *getMd2PJ()					{return (&m_PJ);}
	CMd2 *getMd2Enemigo(int e)			{return (&m_Enemigos[e]);}
	CTextura *getTexturaParticula(int e){return (&m_TexturasParticulas[e]);}
	CTextura *getTexturaScroll(int e)	{return (&m_TexturasScrolls[e]);}
	CTextura *getTexturaEscenario(int e){return (&m_TexturasEscenario[e]);}
	CTextura *getTexturaEditor(int e)	{return (&m_TexturasEditor[e]);}
	TEscenario *getEscenario()			{return (&m_tEscenario);}

};

#endif
